using System;

namespace BlueCrest.ConfigManagement.Core.Logging
{
    /// <summary>
    /// Logger interface which wraps up log4net's functionality (for now)
    /// </summary>
    public interface ILogger
    {
        void Debug(object message);

        void DebugFormat(string message, params object[] args);

        void Info(object message);
        
        /// <summary>
        /// Message with string.Format like implementations
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        void Info(string message, params object[] args);

        /// <summary>
        /// Message with string.Format like implementations
        /// </summary>
        /// <param name="message"></param>
        /// <param name="args"></param>
        void InfoFormat(string message, params object[] args);

        void Info(string message, Exception exception);

        void Warn(string message);

        void Warn(string message, Exception exception);

        void WarnFormat(string message, params object[] args);

        void Error(string message);

        void ErrorFormat(string message, params object[] args);

        void Error(string message, Exception exception, params object[] args);
    }
}